package com.maimao.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.maimao.model.user.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author MaoLin Wang
 * @date 2020/11/29 12:05 上午
 */
public interface UserMapper extends BaseMapper<User> {
    User selectByUsernameValid(@Param("username") String username);
    User selectByUsername(@Param("username") String username);

    User selectByMobileValid(@Param("mobile") String mobile);
    User selectByMobile(@Param("mobile") String mobile);

    User selectByEmailValid(@Param("email") String email);
    User selectByEmail(@Param("email") String email);

    /**
     * 查询用户的证件地址
     */
    Map<String, String> getIdCardUrlByUid(@Param("userId") Long userId);

    User getIdCardInfoByUid(@Param("userId") Long userId);

    int updateIdUrlFront(@Param("userId") String userId, @Param("url") String targetUrl);

    int updateIdUrlBack(@Param("userId") String userId, @Param("url") String targetUrl);

    int updateIdUrlHand(@Param("userId") String userId, @Param("url") String targetUrl);

    int updateShopStatus(@Param("id") Long userId, @Param("shopStatus") Integer shopStatus);

    /**
     * 添加新用户
     */
//    int addMember(@Param("username") String username, @Param("password") String password, @Param("mobile") String mobile);

    User selectIntegral(@Param("userId") Long userId);

    int addIntegralAndReduceFreezeIntegral(@Param("integral") Integer integral, @Param("id") Long userId, @Param("freezeIntegral") Integer freezeIntegral);

    int reduceIntegralAndAddFreezeIntegral(@Param("integral") Integer integral, @Param("id") Long userId, @Param("freezeIntegral") Integer freezeIntegral);

    int addIntegral(@Param("integral") Integer integral, @Param("id") Long userId, @Param("freezeIntegral") Integer freezeIntegral);

    int reduceIntegral(@Param("integral") Integer integral, @Param("id") Long userId, @Param("freezeIntegral") Integer freezeIntegral);

    int addFreezeIntegral(@Param("freezeIntegral") Integer freezeIntegral, @Param("userId") Long userId);

    int reduceFreezeIntegral(@Param("freezeIntegral") Integer freezeIntegral, @Param("userId") Long userId);

    String queryUsername(@Param("id") Long id);

    List<User> queryShopCheck();

    String selectEmailById(@Param("userId") Long userId);

    String selectPwdById(@Param("id") Long userId);

    int updatePwd(@Param("pwd") String pwd, @Param("id") Long id);

    int updateEmailById(@Param("email") String email, @Param("id") Long userId);


    /**
     * 条件查询用户
     * @param id 用户id
     * @param username 用户名
     * @param gender 性别
     * @param mobile 手机号
     * @param status 状态
     */
    List<User> queryByParams(@Param("id") Long id, @Param("username") String username, @Param("gender") Integer gender, @Param("mobile") String mobile, @Param("status") Integer status);

    int updateStatusById(@Param("id") Long userId,@Param("status") Integer status);

    User baseInfo(@Param("id") Long userId);
}
